home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 30
/
Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso
/
Aminet
/
gfx
/
misc
/
gnuplot-3.7src.lha
/
gnuplot-3.7src
/
gnuplot-3.7.lha
/
gnuplot-3.7
/
term
/
mgr.trm
< prev
next >
Wrap
Text File
|
1998-11-26
|
6KB
|
242 lines
/*
* Id: $
*/
/* GNUPLOT - mgr.trm */
/*[
* Copyright 1986 - 1993, 1998 Thomas Williams, Colin Kelley
*
* Permission to use, copy, and distribute this software and its
* documentation for any purpose with or without fee is hereby granted,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation.
*
* Permission to modify the software is granted, but not the right to
* distribute the complete modified source code. Modifications are to
* be distributed as patches to the released version. Permission to
* distribute binaries produced by compiling modified sources is granted,
* provided you
* 1. distribute the corresponding source modifications from the
* released version in the form of a patch file along with the binaries,
* 2. add special version identification to distinguish your version
* in addition to the base release version number,
* 3. provide your name and address as the primary contact for the
* support of your modified version, and
* 4. retain our contact information in regard to use of the base
* software.
* Permission to distribute the released version of the source code along
* with corresponding source modifications in the form of a patch file is
* granted with same provisions 2 through 4 for binary distributions.
*
* This software is provided "as is" without express or implied warranty
* to the extent permitted by applicable law.
]*/
/*
* This file is included by ../term.c.
*
* This terminal driver supports:
* Mgr window system, color display
*
* AUTHOR
* Vincent Broman, broman@nosc.mil
*/
/*
* adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
*/
#include "driver.h"
#ifdef TERM_REGISTER
register_term(mgr)
#endif
#ifdef TERM_PROTO
TERM_PUBLIC void MGR_init __PROTO((void));
TERM_PUBLIC void MGR_graphics __PROTO((void));
TERM_PUBLIC void MGR_text __PROTO((void));
TERM_PUBLIC void MGR_linetype __PROTO((int linetype));
TERM_PUBLIC void MGR_move __PROTO((unsigned int x, unsigned int y));
TERM_PUBLIC void MGR_vector __PROTO((unsigned int x, unsigned int y));
TERM_PUBLIC void MGR_put_text __PROTO((unsigned int x, unsigned int y, char *str));
TERM_PUBLIC void MGR_reset __PROTO((void));
#define MGR_XMAX 640
#define MGR_YMAX 400
#define MGR_VCHAR 16
#define MGR_HCHAR 8
#define MGR_VTIC 4
#define MGR_HTIC 4
#endif /* TERM_PROTO */
#ifndef TERM_PROTO_ONLY
#ifdef TERM_BODY
#undef ESC
#include <term.h> /* from Mgr, not gnuplot */
static int MGR_border = 5;
static int MGR_winnbr = 0;
static int MGR_rowcount = 24;
static int MGR_winwidth = MGR_XMAX;
static int MGR_winheight = MGR_YMAX;
static int MGR_vchar = MGR_VCHAR;
static int MGR_hchar = MGR_HCHAR;
TERM_PUBLIC void MGR_init()
{
char res[300];
int winnbr;
int w, h, bor;
m_setup(0);
m_ttyset();
m_getinfo(G_SYSTEM);
if (m_gets(res) && sscanf(res, "%*s%d%d%d", &w, &h, &bor) == 3)
MGR_border = bor;
m_newwin(0, 0, MGR_winwidth + 2 * MGR_border,
MGR_winheight + 2 * MGR_border);
if (m_gets(res) && sscanf(res, "%d", &winnbr) == 1)
MGR_winnbr = winnbr;
/* if no alt window is created, then the main window is used
* and if size is different, term_tbl updated later */
m_selectwin(MGR_winnbr);
m_setmode(M_ABS);
m_getinfo(G_FONT);
if (m_gets(res) && sscanf(res, "%d %d", &w, &h) == 2) {
MGR_vchar = h;
MGR_hchar = w;
}
m_ttyreset();
term->v_char = MGR_vchar;
term->h_char = MGR_hchar;
term->v_tic = MGR_vchar / 4;
term->h_tic = MGR_hchar / 2;
m_selectwin(0);
m_flush();
}
TERM_PUBLIC void MGR_graphics()
{
char res[32];
int c, r, w, h;
m_selectwin(MGR_winnbr);
m_setmode(M_ACTIVATE);
m_clear();
/* we permit the user to reshape the window arbitrarily.
do_plot calls boundary to recheck the term_tbl for each plot */
m_ttyset();
m_getinfo(G_WINSIZE);
if (m_gets(res) && sscanf(res, "%d %d", &c, &r) == 2)
MGR_rowcount = r;
m_getinfo(G_COORDS);
if (m_gets(res) && sscanf(res, "%d %d %d %d", &c, &r, &w, &h) == 4) {
term->xmax = MGR_winwidth = w;
term->ymax = MGR_winheight = h;
}
m_ttyreset();
m_flush();
}
TERM_PUBLIC void MGR_text()
{
m_go(0, 0);
m_aligntext();
if (MGR_winnbr == 0)
m_move(0, MGR_rowcount - 1);
m_selectwin(0);
m_flush();
}
TERM_PUBLIC void MGR_linetype(linetype)
int linetype;
{
/*
* this mapping of colors is intended for a color sun on which
* colors 0-23 are defined, 0 is white, 1 is black.
*/
m_linecolor(B_SRC, (linetype < 0) ? 1 : (2 + (linetype % 22)));
}
TERM_PUBLIC void MGR_move(x, y)
unsigned int x, y;
{
m_go(x, MGR_winheight - 1 - y);
}
TERM_PUBLIC void MGR_vector(x, y)
unsigned int x, y;
{
m_draw(x, MGR_winheight - 1 - y);
}
TERM_PUBLIC void MGR_put_text(x, y, str)
unsigned int x, y;
char *str;
{
MGR_move(x, y - MGR_vchar / 2);
m_aligntext();
m_printstr(str);
}
TERM_PUBLIC void MGR_reset()
{
m_destroywin(MGR_winnbr);
MGR_winnbr = 0;
m_setmode(M_ACTIVATE);
m_flush();
}
#endif /* TERM_BODY */
#ifdef TERM_TABLE
TERM_TABLE_START(mgr_driver)
"mgr", "Mgr window system",
/* dimensions nominal, replaced during MGR_graphics call */
MGR_XMAX, MGR_YMAX, MGR_VCHAR, MGR_HCHAR,
MGR_VTIC, MGR_HTIC, options_null, MGR_init, MGR_reset,
MGR_text, null_scale, MGR_graphics, MGR_move, MGR_vector,
MGR_linetype, MGR_put_text, null_text_angle,
null_justify_text, do_point, do_arrow, set_font_null
TERM_TABLE_END(mgr_driver)
#undef LAST_TERM
#define LAST_TERM mgr_driver
#endif /* TERM_TABLE */
#endif /* TERM_PROTO_ONLY */
#ifdef TERM_HELP
START_HELP(mgr)
"1 mgr",
"?commands set terminal mgr",
"?set terminal mgr",
"?set term mgr",
"?terminal mgr",
"?term mgr",
"?mgr",
" The `mgr` terminal driver supports the Mgr Window system. It has no options."
END_HELP(mgr)
#endif